package com.example.base.aop.permission


/**  权限请求注解, 请在 Activity 与 Fragment 中使用  **/
/**
 * limitVERSION限制版本 大于此版本生效   默认为-1 不需要限制
 */

@Target(AnnotationTarget.FUNCTION)
@Retention(AnnotationRetention.RUNTIME)
annotation class PermissionRequest(
    /**  待请求的权限列表  **/
    val value: Array<String> = [],
    /**  limitVERSION限制版本 大于此版本生效   默认为-1 不需要限制  **/
    val limitVERSION: Int = -1,

)


/**  权限请求失败时的回调注解  **/
@Target(AnnotationTarget.FUNCTION)
@Retention(AnnotationRetention.RUNTIME)
annotation class PermissionRequestError


/**  权限请求错误异常  **/
class PermissionRequestException(errorMsg: String) : RuntimeException(errorMsg)


/**  权限请求的回调接口  **/
interface RequestPermissionCallback {

    /**  当成功时回调  **/
    fun onSuccess()

    /**
     * 当请求权限失败时回调
     * @param notGrantedPermissions 用户未授权的权限列表
     */
    fun onError(notGrantedPermissions: Array<out String>)
}